import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import qfSubMenu from "qf-sub-menu"
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import bus from "./utils/bus"
Vue.prototype.$bus = bus;
Vue.use(ElementUI);
Vue.use(qfSubMenu)
import "./assets/styles/base.less" //引入基本样式
import "./assets/styles/el-reset.less"
// 使用阿里字体图标，symbol
let script = document.createElement("script")
script.src = "//at.alicdn.com/t/font_2694238_f7ph4pbo4s.js"
document.documentElement.appendChild(script)

// 路由守卫=>路由的钩子函数beforeEach
// 1.判断用户是否登录，如果登录放行，没有登录，访问其他页面的时候直接跳回登录页
// 2.判断是否登录
// 为什么把用户菜单获取逻辑放在此处，因此刷新页面，菜单会丢失
router.beforeEach((to, from, next) => {
        //to:想要跳转的目标路径
        //from:原路径
        //next:相当于放行
        let token = localStorage.getItem("hq-token") || ""
        if (!token) { //没有token说明用户没有登录
            // 只能访问登录页面，访问其他页面一律返回登录页面
            if (to.path === "/login") {
                next()
            } else { //访问login以外的页面，重新访问login页
                return next({ path: "/login" })

            }
        } else { //登录情况下
            // 判断用户菜单有没有生成
            if (store.state.sideMenu.length === 0) {
                store.dispatch("GET_MENU_LIST")
                    .then(() => {
                        next({ path: to.path })
                    })
            } else {
                next()
            }
        }
    })
    // Vue.config.productionTip = false;
    // 后置钩子函数
router.afterEach((to, from) => {
    var routerList = [...to.matched]
        // 因为当前项目匹配的项目第0项是一个空字符串
    routerList.splice(0, 1)
        // 将routerList存入vuex
    store.commit("SET_CRUMBS", routerList)
})
new Vue({
    router,
    store,
    render: (h) => h(App),
}).$mount("#app");